
#line 1 "src/network/ragel_headers.rl"
/* -*- c -*- */
/* *
 * This file is part of Feng
 *
 * Copyright (C) 2009 by LScube team <team@lscube.org>
 * See AUTHORS for more details
 *
 * feng is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * feng is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with feng; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 *
 * */

#include "rtsp.h"

int ragel_read_rtsp_headers(GHashTable *headers, const char *msg,
                            size_t length, size_t *read_size)
{
    int cs;
    const char *p = msg, *pe = p + length;
    RTSP_Header header_code = RTSP_Header__Invalid;

    const char *header_str = NULL;
    size_t header_len = 0;

    
#line 40 "src/network/ragel_headers.c"
static const char _rtsp_headers_actions[] = {
	0, 1, 0, 1, 23, 1, 24, 1, 
	25, 1, 26, 2, 0, 1, 2, 0, 
	2, 2, 0, 3, 2, 0, 4, 2, 
	0, 5, 2, 0, 6, 2, 0, 7, 
	2, 0, 8, 2, 0, 9, 2, 0, 
	10, 2, 0, 11, 2, 0, 12, 2, 
	0, 13, 2, 0, 14, 2, 0, 15, 
	2, 0, 16, 2, 0, 17, 2, 0, 
	18, 2, 0, 19, 2, 0, 20, 2, 
	0, 21, 2, 0, 22, 2, 23, 24
	
};

static const short _rtsp_headers_key_offsets[] = {
	0, 0, 32, 34, 45, 49, 55, 87, 
	102, 115, 128, 141, 152, 165, 178, 191, 
	204, 217, 230, 243, 256, 269, 282, 295, 
	306, 319, 332, 345, 358, 371, 384, 397, 
	410, 421, 436, 449, 462, 475, 488, 501, 
	512, 529, 542, 555, 568, 579, 592, 605, 
	618, 631, 644, 655, 668, 681, 694, 705, 
	718, 731, 742, 755, 768, 781, 792, 805, 
	818, 831, 844, 857, 870, 883, 894, 909, 
	922, 935, 948, 959, 972, 985, 998, 1011, 
	1024, 1037, 1050, 1061, 1074, 1087, 1100, 1113, 
	1124, 1141, 1154, 1167, 1180, 1191, 1206, 1219, 
	1232, 1245, 1258, 1269, 1282, 1295, 1308, 1321, 
	1332, 1345, 1356, 1369, 1382, 1395, 1408, 1419, 
	1434, 1449, 1462, 1475, 1488, 1499, 1512, 1525, 
	1538, 1551, 1562, 1575, 1588, 1601, 1612, 1627, 
	1640, 1653, 1666, 1679, 1692, 1705, 1718, 1729, 
	1742, 1755, 1768, 1781, 1794, 1807, 1820, 1831, 
	1846, 1859, 1872, 1885, 1898, 1911, 1924, 1937, 
	1950, 1963, 1974, 1987, 2000, 2011, 2024, 2037, 
	2050, 2063, 2076, 2087, 2089, 2095
};

static const char _rtsp_headers_trans_keys[] = {
	10, 13, 65, 66, 67, 68, 76, 80, 
	82, 83, 84, 85, 95, 97, 98, 99, 
	100, 108, 112, 114, 115, 116, 117, 126, 
	45, 46, 48, 57, 69, 90, 101, 122, 
	10, 13, 58, 95, 126, 45, 46, 48, 
	57, 65, 90, 97, 122, 9, 32, 33, 
	126, 9, 10, 13, 32, 33, 126, 10, 
	13, 65, 66, 67, 68, 76, 80, 82, 
	83, 84, 85, 95, 97, 98, 99, 100, 
	108, 112, 114, 115, 116, 117, 126, 45, 
	46, 48, 57, 69, 90, 101, 122, 58, 
	76, 85, 95, 108, 117, 126, 45, 46, 
	48, 57, 65, 90, 97, 122, 58, 76, 
	95, 108, 126, 45, 46, 48, 57, 65, 
	90, 97, 122, 58, 79, 95, 111, 126, 
	45, 46, 48, 57, 65, 90, 97, 122, 
	58, 87, 95, 119, 126, 45, 46, 48, 
	57, 65, 90, 97, 122, 58, 95, 126, 
	45, 46, 48, 57, 65, 90, 97, 122, 
	58, 84, 95, 116, 126, 45, 46, 48, 
	57, 65, 90, 97, 122, 58, 72, 95, 
	104, 126, 45, 46, 48, 57, 65, 90, 
	97, 122, 58, 79, 95, 111, 126, 45, 
	46, 48, 57, 65, 90, 97, 122, 58, 
	82, 95, 114, 126, 45, 46, 48, 57, 
	65, 90, 97, 122, 58, 73, 95, 105, 
	126, 45, 46, 48, 57, 65, 90, 97, 
	122, 58, 90, 95, 122, 126, 45, 46, 
	48, 57, 65, 89, 97, 121, 58, 65, 
	95, 97, 126, 45, 46, 48, 57, 66, 
	90, 98, 122, 58, 84, 95, 116, 126, 
	45, 46, 48, 57, 65, 90, 97, 122, 
	58, 73, 95, 105, 126, 45, 46, 48, 
	57, 65, 90, 97, 122, 58, 79, 95, 
	111, 126, 45, 46, 48, 57, 65, 90, 
	97, 122, 58, 78, 95, 110, 126, 45, 
	46, 48, 57, 65, 90, 97, 122, 58, 
	95, 126, 45, 46, 48, 57, 65, 90, 
	97, 122, 58, 65, 95, 97, 126, 45, 
	46, 48, 57, 66, 90, 98, 122, 58, 
	78, 95, 110, 126, 45, 46, 48, 57, 
	65, 90, 97, 122, 58, 68, 95, 100, 
	126, 45, 46, 48, 57, 65, 90, 97, 
	122, 58, 87, 95, 119, 126, 45, 46, 
	48, 57, 65, 90, 97, 122, 58, 73, 
	95, 105, 126, 45, 46, 48, 57, 65, 
	90, 97, 122, 58, 68, 95, 100, 126, 
	45, 46, 48, 57, 65, 90, 97, 122, 
	58, 84, 95, 116, 126, 45, 46, 48, 
	57, 65, 90, 97, 122, 58, 72, 95, 
	104, 126, 45, 46, 48, 57, 65, 90, 
	97, 122, 58, 95, 126, 45, 46, 48, 
	57, 65, 90, 97, 122, 58, 79, 83, 
	95, 111, 115, 126, 45, 46, 48, 57, 
	65, 90, 97, 122, 58, 78, 95, 110, 
	126, 45, 46, 48, 57, 65, 90, 97, 
	122, 58, 84, 95, 116, 126, 45, 46, 
	48, 57, 65, 90, 97, 122, 58, 69, 
	95, 101, 126, 45, 46, 48, 57, 65, 
	90, 97, 122, 58, 78, 95, 110, 126, 
	45, 46, 48, 57, 65, 90, 97, 122, 
	58, 84, 95, 116, 126, 45, 46, 48, 
	57, 65, 90, 97, 122, 45, 46, 58, 
	95, 126, 48, 57, 65, 90, 97, 122, 
	58, 66, 76, 84, 95, 98, 108, 116, 
	126, 45, 46, 48, 57, 65, 90, 97, 
	122, 58, 65, 95, 97, 126, 45, 46, 
	48, 57, 66, 90, 98, 122, 58, 83, 
	95, 115, 126, 45, 46, 48, 57, 65, 
	90, 97, 122, 58, 69, 95, 101, 126, 
	45, 46, 48, 57, 65, 90, 97, 122, 
	58, 95, 126, 45, 46, 48, 57, 65, 
	90, 97, 122, 58, 69, 95, 101, 126, 
	45, 46, 48, 57, 65, 90, 97, 122, 
	58, 78, 95, 110, 126, 45, 46, 48, 
	57, 65, 90, 97, 122, 58, 71, 95, 
	103, 126, 45, 46, 48, 57, 65, 90, 
	97, 122, 58, 84, 95, 116, 126, 45, 
	46, 48, 57, 65, 90, 97, 122, 58, 
	72, 95, 104, 126, 45, 46, 48, 57, 
	65, 90, 97, 122, 58, 95, 126, 45, 
	46, 48, 57, 65, 90, 97, 122, 58, 
	89, 95, 121, 126, 45, 46, 48, 57, 
	65, 90, 97, 122, 58, 80, 95, 112, 
	126, 45, 46, 48, 57, 65, 90, 97, 
	122, 58, 69, 95, 101, 126, 45, 46, 
	48, 57, 65, 90, 97, 122, 58, 95, 
	126, 45, 46, 48, 57, 65, 90, 97, 
	122, 58, 69, 95, 101, 126, 45, 46, 
	48, 57, 65, 90, 97, 122, 58, 81, 
	95, 113, 126, 45, 46, 48, 57, 65, 
	90, 97, 122, 58, 95, 126, 45, 46, 
	48, 57, 65, 90, 97, 122, 58, 65, 
	95, 97, 126, 45, 46, 48, 57, 66, 
	90, 98, 122, 58, 84, 95, 116, 126, 
	45, 46, 48, 57, 65, 90, 97, 122, 
	58, 69, 95, 101, 126, 45, 46, 48, 
	57, 65, 90, 97, 122, 58, 95, 126, 
	45, 46, 48, 57, 65, 90, 97, 122, 
	58, 79, 95, 111, 126, 45, 46, 48, 
	57, 65, 90, 97, 122, 58, 67, 95, 
	99, 126, 45, 46, 48, 57, 65, 90, 
	97, 122, 58, 65, 95, 97, 126, 45, 
	46, 48, 57, 66, 90, 98, 122, 58, 
	84, 95, 116, 126, 45, 46, 48, 57, 
	65, 90, 97, 122, 58, 73, 95, 105, 
	126, 45, 46, 48, 57, 65, 90, 97, 
	122, 58, 79, 95, 111, 126, 45, 46, 
	48, 57, 65, 90, 97, 122, 58, 78, 
	95, 110, 126, 45, 46, 48, 57, 65, 
	90, 97, 122, 58, 95, 126, 45, 46, 
	48, 57, 65, 90, 97, 122, 58, 82, 
	85, 95, 114, 117, 126, 45, 46, 48, 
	57, 65, 90, 97, 122, 58, 79, 95, 
	111, 126, 45, 46, 48, 57, 65, 90, 
	97, 122, 58, 88, 95, 120, 126, 45, 
	46, 48, 57, 65, 90, 97, 122, 58, 
	89, 95, 121, 126, 45, 46, 48, 57, 
	65, 90, 97, 122, 45, 46, 58, 95, 
	126, 48, 57, 65, 90, 97, 122, 58, 
	82, 95, 114, 126, 45, 46, 48, 57, 
	65, 90, 97, 122, 58, 69, 95, 101, 
	126, 45, 46, 48, 57, 65, 90, 97, 
	122, 58, 81, 95, 113, 126, 45, 46, 
	48, 57, 65, 90, 97, 122, 58, 85, 
	95, 117, 126, 45, 46, 48, 57, 65, 
	90, 97, 122, 58, 73, 95, 105, 126, 
	45, 46, 48, 57, 65, 90, 97, 122, 
	58, 82, 95, 114, 126, 45, 46, 48, 
	57, 65, 90, 97, 122, 58, 69, 95, 
	101, 126, 45, 46, 48, 57, 65, 90, 
	97, 122, 58, 95, 126, 45, 46, 48, 
	57, 65, 90, 97, 122, 58, 66, 95, 
	98, 126, 45, 46, 48, 57, 65, 90, 
	97, 122, 58, 76, 95, 108, 126, 45, 
	46, 48, 57, 65, 90, 97, 122, 58, 
	73, 95, 105, 126, 45, 46, 48, 57, 
	65, 90, 97, 122, 58, 67, 95, 99, 
	126, 45, 46, 48, 57, 65, 90, 97, 
	122, 58, 95, 126, 45, 46, 48, 57, 
	65, 90, 97, 122, 58, 65, 69, 84, 
	95, 97, 101, 116, 126, 45, 46, 48, 
	57, 66, 90, 98, 122, 58, 78, 95, 
	110, 126, 45, 46, 48, 57, 65, 90, 
	97, 122, 58, 71, 95, 103, 126, 45, 
	46, 48, 57, 65, 90, 97, 122, 58, 
	69, 95, 101, 126, 45, 46, 48, 57, 
	65, 90, 97, 122, 58, 95, 126, 45, 
	46, 48, 57, 65, 90, 97, 122, 58, 
	70, 81, 95, 102, 113, 126, 45, 46, 
	48, 57, 65, 90, 97, 122, 58, 69, 
	95, 101, 126, 45, 46, 48, 57, 65, 
	90, 97, 122, 58, 82, 95, 114, 126, 
	45, 46, 48, 57, 65, 90, 97, 122, 
	58, 69, 95, 101, 126, 45, 46, 48, 
	57, 65, 90, 97, 122, 58, 82, 95, 
	114, 126, 45, 46, 48, 57, 65, 90, 
	97, 122, 58, 95, 126, 45, 46, 48, 
	57, 65, 90, 97, 122, 58, 85, 95, 
	117, 126, 45, 46, 48, 57, 65, 90, 
	97, 122, 58, 73, 95, 105, 126, 45, 
	46, 48, 57, 65, 90, 97, 122, 58, 
	82, 95, 114, 126, 45, 46, 48, 57, 
	65, 90, 97, 122, 58, 69, 95, 101, 
	126, 45, 46, 48, 57, 65, 90, 97, 
	122, 58, 95, 126, 45, 46, 48, 57, 
	65, 90, 97, 122, 58, 80, 95, 112, 
	126, 45, 46, 48, 57, 65, 90, 97, 
	122, 45, 46, 58, 95, 126, 48, 57, 
	65, 90, 97, 122, 58, 73, 95, 105, 
	126, 45, 46, 48, 57, 65, 90, 97, 
	122, 58, 78, 95, 110, 126, 45, 46, 
	48, 57, 65, 90, 97, 122, 58, 70, 
	95, 102, 126, 45, 46, 48, 57, 65, 
	90, 97, 122, 58, 79, 95, 111, 126, 
	45, 46, 48, 57, 65, 90, 97, 122, 
	58, 95, 126, 45, 46, 48, 57, 65, 
	90, 97, 122, 58, 69, 80, 95, 101, 
	112, 126, 45, 46, 48, 57, 65, 90, 
	97, 122, 58, 82, 83, 95, 114, 115, 
	126, 45, 46, 48, 57, 65, 90, 97, 
	122, 58, 86, 95, 118, 126, 45, 46, 
	48, 57, 65, 90, 97, 122, 58, 69, 
	95, 101, 126, 45, 46, 48, 57, 65, 
	90, 97, 122, 58, 82, 95, 114, 126, 
	45, 46, 48, 57, 65, 90, 97, 122, 
	58, 95, 126, 45, 46, 48, 57, 65, 
	90, 97, 122, 58, 83, 95, 115, 126, 
	45, 46, 48, 57, 65, 90, 97, 122, 
	58, 73, 95, 105, 126, 45, 46, 48, 
	57, 65, 90, 97, 122, 58, 79, 95, 
	111, 126, 45, 46, 48, 57, 65, 90, 
	97, 122, 58, 78, 95, 110, 126, 45, 
	46, 48, 57, 65, 90, 97, 122, 58, 
	95, 126, 45, 46, 48, 57, 65, 90, 
	97, 122, 58, 69, 95, 101, 126, 45, 
	46, 48, 57, 65, 90, 97, 122, 58, 
	69, 95, 101, 126, 45, 46, 48, 57, 
	65, 90, 97, 122, 58, 68, 95, 100, 
	126, 45, 46, 48, 57, 65, 90, 97, 
	122, 58, 95, 126, 45, 46, 48, 57, 
	65, 90, 97, 122, 58, 73, 82, 95, 
	105, 114, 126, 45, 46, 48, 57, 65, 
	90, 97, 122, 58, 77, 95, 109, 126, 
	45, 46, 48, 57, 65, 90, 97, 122, 
	58, 69, 95, 101, 126, 45, 46, 48, 
	57, 65, 90, 97, 122, 58, 83, 95, 
	115, 126, 45, 46, 48, 57, 65, 90, 
	97, 122, 58, 84, 95, 116, 126, 45, 
	46, 48, 57, 65, 90, 97, 122, 58, 
	65, 95, 97, 126, 45, 46, 48, 57, 
	66, 90, 98, 122, 58, 77, 95, 109, 
	126, 45, 46, 48, 57, 65, 90, 97, 
	122, 58, 80, 95, 112, 126, 45, 46, 
	48, 57, 65, 90, 97, 122, 58, 95, 
	126, 45, 46, 48, 57, 65, 90, 97, 
	122, 58, 65, 95, 97, 126, 45, 46, 
	48, 57, 66, 90, 98, 122, 58, 78, 
	95, 110, 126, 45, 46, 48, 57, 65, 
	90, 97, 122, 58, 83, 95, 115, 126, 
	45, 46, 48, 57, 65, 90, 97, 122, 
	58, 80, 95, 112, 126, 45, 46, 48, 
	57, 65, 90, 97, 122, 58, 79, 95, 
	111, 126, 45, 46, 48, 57, 65, 90, 
	97, 122, 58, 82, 95, 114, 126, 45, 
	46, 48, 57, 65, 90, 97, 122, 58, 
	84, 95, 116, 126, 45, 46, 48, 57, 
	65, 90, 97, 122, 58, 95, 126, 45, 
	46, 48, 57, 65, 90, 97, 122, 58, 
	78, 83, 95, 110, 115, 126, 45, 46, 
	48, 57, 65, 90, 97, 122, 58, 83, 
	95, 115, 126, 45, 46, 48, 57, 65, 
	90, 97, 122, 58, 85, 95, 117, 126, 
	45, 46, 48, 57, 65, 90, 97, 122, 
	58, 80, 95, 112, 126, 45, 46, 48, 
	57, 65, 90, 97, 122, 58, 80, 95, 
	112, 126, 45, 46, 48, 57, 65, 90, 
	97, 122, 58, 79, 95, 111, 126, 45, 
	46, 48, 57, 65, 90, 97, 122, 58, 
	82, 95, 114, 126, 45, 46, 48, 57, 
	65, 90, 97, 122, 58, 84, 95, 116, 
	126, 45, 46, 48, 57, 65, 90, 97, 
	122, 58, 69, 95, 101, 126, 45, 46, 
	48, 57, 65, 90, 97, 122, 58, 68, 
	95, 100, 126, 45, 46, 48, 57, 65, 
	90, 97, 122, 58, 95, 126, 45, 46, 
	48, 57, 65, 90, 97, 122, 58, 69, 
	95, 101, 126, 45, 46, 48, 57, 65, 
	90, 97, 122, 58, 82, 95, 114, 126, 
	45, 46, 48, 57, 65, 90, 97, 122, 
	45, 46, 58, 95, 126, 48, 57, 65, 
	90, 97, 122, 58, 65, 95, 97, 126, 
	45, 46, 48, 57, 66, 90, 98, 122, 
	58, 71, 95, 103, 126, 45, 46, 48, 
	57, 65, 90, 97, 122, 58, 69, 95, 
	101, 126, 45, 46, 48, 57, 65, 90, 
	97, 122, 58, 78, 95, 110, 126, 45, 
	46, 48, 57, 65, 90, 97, 122, 58, 
	84, 95, 116, 126, 45, 46, 48, 57, 
	65, 90, 97, 122, 58, 95, 126, 45, 
	46, 48, 57, 65, 90, 97, 122, 10, 
	13, 9, 10, 13, 32, 33, 126, 0
};

static const char _rtsp_headers_single_lengths[] = {
	0, 24, 2, 3, 2, 4, 24, 7, 
	5, 5, 5, 3, 5, 5, 5, 5, 
	5, 5, 5, 5, 5, 5, 5, 3, 
	5, 5, 5, 5, 5, 5, 5, 5, 
	3, 7, 5, 5, 5, 5, 5, 5, 
	9, 5, 5, 5, 3, 5, 5, 5, 
	5, 5, 3, 5, 5, 5, 3, 5, 
	5, 3, 5, 5, 5, 3, 5, 5, 
	5, 5, 5, 5, 5, 3, 7, 5, 
	5, 5, 5, 5, 5, 5, 5, 5, 
	5, 5, 3, 5, 5, 5, 5, 3, 
	9, 5, 5, 5, 3, 7, 5, 5, 
	5, 5, 3, 5, 5, 5, 5, 3, 
	5, 5, 5, 5, 5, 5, 3, 7, 
	7, 5, 5, 5, 3, 5, 5, 5, 
	5, 3, 5, 5, 5, 3, 7, 5, 
	5, 5, 5, 5, 5, 5, 3, 5, 
	5, 5, 5, 5, 5, 5, 3, 7, 
	5, 5, 5, 5, 5, 5, 5, 5, 
	5, 3, 5, 5, 5, 5, 5, 5, 
	5, 5, 3, 2, 4, 0
};

static const char _rtsp_headers_range_lengths[] = {
	0, 4, 0, 4, 1, 1, 4, 4, 
	4, 4, 4, 4, 4, 4, 4, 4, 
	4, 4, 4, 4, 4, 4, 4, 4, 
	4, 4, 4, 4, 4, 4, 4, 4, 
	4, 4, 4, 4, 4, 4, 4, 3, 
	4, 4, 4, 4, 4, 4, 4, 4, 
	4, 4, 4, 4, 4, 4, 4, 4, 
	4, 4, 4, 4, 4, 4, 4, 4, 
	4, 4, 4, 4, 4, 4, 4, 4, 
	4, 4, 3, 4, 4, 4, 4, 4, 
	4, 4, 4, 4, 4, 4, 4, 4, 
	4, 4, 4, 4, 4, 4, 4, 4, 
	4, 4, 4, 4, 4, 4, 4, 4, 
	4, 3, 4, 4, 4, 4, 4, 4, 
	4, 4, 4, 4, 4, 4, 4, 4, 
	4, 4, 4, 4, 4, 4, 4, 4, 
	4, 4, 4, 4, 4, 4, 4, 4, 
	4, 4, 4, 4, 4, 4, 4, 4, 
	4, 4, 4, 4, 4, 4, 4, 4, 
	4, 4, 4, 4, 3, 4, 4, 4, 
	4, 4, 4, 0, 1, 0
};

static const short _rtsp_headers_index_offsets[] = {
	0, 0, 29, 32, 40, 44, 50, 79, 
	91, 101, 111, 121, 129, 139, 149, 159, 
	169, 179, 189, 199, 209, 219, 229, 239, 
	247, 257, 267, 277, 287, 297, 307, 317, 
	327, 335, 347, 357, 367, 377, 387, 397, 
	406, 420, 430, 440, 450, 458, 468, 478, 
	488, 498, 508, 516, 526, 536, 546, 554, 
	564, 574, 582, 592, 602, 612, 620, 630, 
	640, 650, 660, 670, 680, 690, 698, 710, 
	720, 730, 740, 749, 759, 769, 779, 789, 
	799, 809, 819, 827, 837, 847, 857, 867, 
	875, 889, 899, 909, 919, 927, 939, 949, 
	959, 969, 979, 987, 997, 1007, 1017, 1027, 
	1035, 1045, 1054, 1064, 1074, 1084, 1094, 1102, 
	1114, 1126, 1136, 1146, 1156, 1164, 1174, 1184, 
	1194, 1204, 1212, 1222, 1232, 1242, 1250, 1262, 
	1272, 1282, 1292, 1302, 1312, 1322, 1332, 1340, 
	1350, 1360, 1370, 1380, 1390, 1400, 1410, 1418, 
	1430, 1440, 1450, 1460, 1470, 1480, 1490, 1500, 
	1510, 1520, 1528, 1538, 1548, 1557, 1567, 1577, 
	1587, 1597, 1607, 1615, 1618, 1624
};

static const unsigned char _rtsp_headers_indicies[] = {
	0, 2, 4, 5, 6, 7, 8, 9, 
	10, 11, 12, 13, 3, 4, 5, 6, 
	7, 8, 9, 10, 11, 12, 13, 3, 
	3, 3, 3, 3, 1, 0, 2, 1, 
	14, 3, 3, 3, 3, 3, 3, 1, 
	15, 15, 16, 1, 17, 18, 19, 17, 
	16, 1, 0, 2, 4, 5, 6, 7, 
	8, 9, 10, 11, 12, 13, 3, 4, 
	5, 6, 7, 8, 9, 10, 11, 12, 
	13, 3, 3, 3, 3, 3, 1, 14, 
	20, 21, 3, 20, 21, 3, 3, 3, 
	3, 3, 1, 14, 22, 3, 22, 3, 
	3, 3, 3, 3, 1, 14, 23, 3, 
	23, 3, 3, 3, 3, 3, 1, 14, 
	24, 3, 24, 3, 3, 3, 3, 3, 
	1, 25, 3, 3, 3, 3, 3, 3, 
	1, 14, 26, 3, 26, 3, 3, 3, 
	3, 3, 1, 14, 27, 3, 27, 3, 
	3, 3, 3, 3, 1, 14, 28, 3, 
	28, 3, 3, 3, 3, 3, 1, 14, 
	29, 3, 29, 3, 3, 3, 3, 3, 
	1, 14, 30, 3, 30, 3, 3, 3, 
	3, 3, 1, 14, 31, 3, 31, 3, 
	3, 3, 3, 3, 1, 14, 32, 3, 
	32, 3, 3, 3, 3, 3, 1, 14, 
	33, 3, 33, 3, 3, 3, 3, 3, 
	1, 14, 34, 3, 34, 3, 3, 3, 
	3, 3, 1, 14, 35, 3, 35, 3, 
	3, 3, 3, 3, 1, 14, 36, 3, 
	36, 3, 3, 3, 3, 3, 1, 37, 
	3, 3, 3, 3, 3, 3, 1, 14, 
	38, 3, 38, 3, 3, 3, 3, 3, 
	1, 14, 39, 3, 39, 3, 3, 3, 
	3, 3, 1, 14, 40, 3, 40, 3, 
	3, 3, 3, 3, 1, 14, 41, 3, 
	41, 3, 3, 3, 3, 3, 1, 14, 
	42, 3, 42, 3, 3, 3, 3, 3, 
	1, 14, 43, 3, 43, 3, 3, 3, 
	3, 3, 1, 14, 44, 3, 44, 3, 
	3, 3, 3, 3, 1, 14, 45, 3, 
	45, 3, 3, 3, 3, 3, 1, 46, 
	3, 3, 3, 3, 3, 3, 1, 14, 
	47, 48, 3, 47, 48, 3, 3, 3, 
	3, 3, 1, 14, 49, 3, 49, 3, 
	3, 3, 3, 3, 1, 14, 50, 3, 
	50, 3, 3, 3, 3, 3, 1, 14, 
	51, 3, 51, 3, 3, 3, 3, 3, 
	1, 14, 52, 3, 52, 3, 3, 3, 
	3, 3, 1, 14, 53, 3, 53, 3, 
	3, 3, 3, 3, 1, 54, 3, 14, 
	3, 3, 3, 3, 3, 1, 14, 55, 
	56, 57, 3, 55, 56, 57, 3, 3, 
	3, 3, 3, 1, 14, 58, 3, 58, 
	3, 3, 3, 3, 3, 1, 14, 59, 
	3, 59, 3, 3, 3, 3, 3, 1, 
	14, 60, 3, 60, 3, 3, 3, 3, 
	3, 1, 61, 3, 3, 3, 3, 3, 
	3, 1, 14, 62, 3, 62, 3, 3, 
	3, 3, 3, 1, 14, 63, 3, 63, 
	3, 3, 3, 3, 3, 1, 14, 64, 
	3, 64, 3, 3, 3, 3, 3, 1, 
	14, 65, 3, 65, 3, 3, 3, 3, 
	3, 1, 14, 66, 3, 66, 3, 3, 
	3, 3, 3, 1, 67, 3, 3, 3, 
	3, 3, 3, 1, 14, 68, 3, 68, 
	3, 3, 3, 3, 3, 1, 14, 69, 
	3, 69, 3, 3, 3, 3, 3, 1, 
	14, 70, 3, 70, 3, 3, 3, 3, 
	3, 1, 71, 3, 3, 3, 3, 3, 
	3, 1, 14, 72, 3, 72, 3, 3, 
	3, 3, 3, 1, 14, 73, 3, 73, 
	3, 3, 3, 3, 3, 1, 74, 3, 
	3, 3, 3, 3, 3, 1, 14, 75, 
	3, 75, 3, 3, 3, 3, 3, 1, 
	14, 76, 3, 76, 3, 3, 3, 3, 
	3, 1, 14, 77, 3, 77, 3, 3, 
	3, 3, 3, 1, 78, 3, 3, 3, 
	3, 3, 3, 1, 14, 79, 3, 79, 
	3, 3, 3, 3, 3, 1, 14, 80, 
	3, 80, 3, 3, 3, 3, 3, 1, 
	14, 81, 3, 81, 3, 3, 3, 3, 
	3, 1, 14, 82, 3, 82, 3, 3, 
	3, 3, 3, 1, 14, 83, 3, 83, 
	3, 3, 3, 3, 3, 1, 14, 84, 
	3, 84, 3, 3, 3, 3, 3, 1, 
	14, 85, 3, 85, 3, 3, 3, 3, 
	3, 1, 86, 3, 3, 3, 3, 3, 
	3, 1, 14, 87, 88, 3, 87, 88, 
	3, 3, 3, 3, 3, 1, 14, 89, 
	3, 89, 3, 3, 3, 3, 3, 1, 
	14, 90, 3, 90, 3, 3, 3, 3, 
	3, 1, 14, 91, 3, 91, 3, 3, 
	3, 3, 3, 1, 92, 3, 14, 3, 
	3, 3, 3, 3, 1, 14, 93, 3, 
	93, 3, 3, 3, 3, 3, 1, 14, 
	94, 3, 94, 3, 3, 3, 3, 3, 
	1, 14, 95, 3, 95, 3, 3, 3, 
	3, 3, 1, 14, 96, 3, 96, 3, 
	3, 3, 3, 3, 1, 14, 97, 3, 
	97, 3, 3, 3, 3, 3, 1, 14, 
	98, 3, 98, 3, 3, 3, 3, 3, 
	1, 14, 99, 3, 99, 3, 3, 3, 
	3, 3, 1, 100, 3, 3, 3, 3, 
	3, 3, 1, 14, 101, 3, 101, 3, 
	3, 3, 3, 3, 1, 14, 102, 3, 
	102, 3, 3, 3, 3, 3, 1, 14, 
	103, 3, 103, 3, 3, 3, 3, 3, 
	1, 14, 104, 3, 104, 3, 3, 3, 
	3, 3, 1, 105, 3, 3, 3, 3, 
	3, 3, 1, 14, 106, 107, 108, 3, 
	106, 107, 108, 3, 3, 3, 3, 3, 
	1, 14, 109, 3, 109, 3, 3, 3, 
	3, 3, 1, 14, 110, 3, 110, 3, 
	3, 3, 3, 3, 1, 14, 111, 3, 
	111, 3, 3, 3, 3, 3, 1, 112, 
	3, 3, 3, 3, 3, 3, 1, 14, 
	113, 114, 3, 113, 114, 3, 3, 3, 
	3, 3, 1, 14, 115, 3, 115, 3, 
	3, 3, 3, 3, 1, 14, 116, 3, 
	116, 3, 3, 3, 3, 3, 1, 14, 
	117, 3, 117, 3, 3, 3, 3, 3, 
	1, 14, 118, 3, 118, 3, 3, 3, 
	3, 3, 1, 119, 3, 3, 3, 3, 
	3, 3, 1, 14, 120, 3, 120, 3, 
	3, 3, 3, 3, 1, 14, 121, 3, 
	121, 3, 3, 3, 3, 3, 1, 14, 
	122, 3, 122, 3, 3, 3, 3, 3, 
	1, 14, 123, 3, 123, 3, 3, 3, 
	3, 3, 1, 124, 3, 3, 3, 3, 
	3, 3, 1, 14, 125, 3, 125, 3, 
	3, 3, 3, 3, 1, 126, 3, 14, 
	3, 3, 3, 3, 3, 1, 14, 127, 
	3, 127, 3, 3, 3, 3, 3, 1, 
	14, 128, 3, 128, 3, 3, 3, 3, 
	3, 1, 14, 129, 3, 129, 3, 3, 
	3, 3, 3, 1, 14, 130, 3, 130, 
	3, 3, 3, 3, 3, 1, 131, 3, 
	3, 3, 3, 3, 3, 1, 14, 132, 
	133, 3, 132, 133, 3, 3, 3, 3, 
	3, 1, 14, 134, 135, 3, 134, 135, 
	3, 3, 3, 3, 3, 1, 14, 136, 
	3, 136, 3, 3, 3, 3, 3, 1, 
	14, 137, 3, 137, 3, 3, 3, 3, 
	3, 1, 14, 138, 3, 138, 3, 3, 
	3, 3, 3, 1, 139, 3, 3, 3, 
	3, 3, 3, 1, 14, 140, 3, 140, 
	3, 3, 3, 3, 3, 1, 14, 141, 
	3, 141, 3, 3, 3, 3, 3, 1, 
	14, 142, 3, 142, 3, 3, 3, 3, 
	3, 1, 14, 143, 3, 143, 3, 3, 
	3, 3, 3, 1, 144, 3, 3, 3, 
	3, 3, 3, 1, 14, 145, 3, 145, 
	3, 3, 3, 3, 3, 1, 14, 146, 
	3, 146, 3, 3, 3, 3, 3, 1, 
	14, 147, 3, 147, 3, 3, 3, 3, 
	3, 1, 148, 3, 3, 3, 3, 3, 
	3, 1, 14, 149, 150, 3, 149, 150, 
	3, 3, 3, 3, 3, 1, 14, 151, 
	3, 151, 3, 3, 3, 3, 3, 1, 
	14, 152, 3, 152, 3, 3, 3, 3, 
	3, 1, 14, 153, 3, 153, 3, 3, 
	3, 3, 3, 1, 14, 154, 3, 154, 
	3, 3, 3, 3, 3, 1, 14, 155, 
	3, 155, 3, 3, 3, 3, 3, 1, 
	14, 156, 3, 156, 3, 3, 3, 3, 
	3, 1, 14, 157, 3, 157, 3, 3, 
	3, 3, 3, 1, 158, 3, 3, 3, 
	3, 3, 3, 1, 14, 159, 3, 159, 
	3, 3, 3, 3, 3, 1, 14, 160, 
	3, 160, 3, 3, 3, 3, 3, 1, 
	14, 161, 3, 161, 3, 3, 3, 3, 
	3, 1, 14, 162, 3, 162, 3, 3, 
	3, 3, 3, 1, 14, 163, 3, 163, 
	3, 3, 3, 3, 3, 1, 14, 164, 
	3, 164, 3, 3, 3, 3, 3, 1, 
	14, 165, 3, 165, 3, 3, 3, 3, 
	3, 1, 166, 3, 3, 3, 3, 3, 
	3, 1, 14, 167, 168, 3, 167, 168, 
	3, 3, 3, 3, 3, 1, 14, 169, 
	3, 169, 3, 3, 3, 3, 3, 1, 
	14, 170, 3, 170, 3, 3, 3, 3, 
	3, 1, 14, 171, 3, 171, 3, 3, 
	3, 3, 3, 1, 14, 172, 3, 172, 
	3, 3, 3, 3, 3, 1, 14, 173, 
	3, 173, 3, 3, 3, 3, 3, 1, 
	14, 174, 3, 174, 3, 3, 3, 3, 
	3, 1, 14, 175, 3, 175, 3, 3, 
	3, 3, 3, 1, 14, 176, 3, 176, 
	3, 3, 3, 3, 3, 1, 14, 177, 
	3, 177, 3, 3, 3, 3, 3, 1, 
	178, 3, 3, 3, 3, 3, 3, 1, 
	14, 179, 3, 179, 3, 3, 3, 3, 
	3, 1, 14, 180, 3, 180, 3, 3, 
	3, 3, 3, 1, 181, 3, 14, 3, 
	3, 3, 3, 3, 1, 14, 182, 3, 
	182, 3, 3, 3, 3, 3, 1, 14, 
	183, 3, 183, 3, 3, 3, 3, 3, 
	1, 14, 184, 3, 184, 3, 3, 3, 
	3, 3, 1, 14, 185, 3, 185, 3, 
	3, 3, 3, 3, 1, 14, 186, 3, 
	186, 3, 3, 3, 3, 3, 1, 187, 
	3, 3, 3, 3, 3, 3, 1, 188, 
	189, 1, 190, 18, 19, 190, 191, 1, 
	1, 0
};

static const unsigned char _rtsp_headers_trans_targs[] = {
	165, 0, 2, 3, 7, 24, 33, 58, 
	62, 70, 88, 111, 126, 143, 4, 5, 
	164, 5, 6, 163, 8, 12, 9, 10, 
	11, 4, 13, 14, 15, 16, 17, 18, 
	19, 20, 21, 22, 23, 4, 25, 26, 
	27, 28, 29, 30, 31, 32, 4, 34, 
	55, 35, 36, 37, 38, 39, 40, 41, 
	45, 51, 42, 43, 44, 4, 46, 47, 
	48, 49, 50, 4, 52, 53, 54, 4, 
	56, 57, 4, 59, 60, 61, 4, 63, 
	64, 65, 66, 67, 68, 69, 4, 71, 
	83, 72, 73, 74, 75, 76, 77, 78, 
	79, 80, 81, 82, 4, 84, 85, 86, 
	87, 4, 89, 93, 104, 90, 91, 92, 
	4, 94, 99, 95, 96, 97, 98, 4, 
	100, 101, 102, 103, 4, 105, 106, 107, 
	108, 109, 110, 4, 112, 122, 113, 117, 
	114, 115, 116, 4, 118, 119, 120, 121, 
	4, 123, 124, 125, 4, 127, 135, 128, 
	129, 130, 131, 132, 133, 134, 4, 136, 
	137, 138, 139, 140, 141, 142, 4, 144, 
	154, 145, 146, 147, 148, 149, 150, 151, 
	152, 153, 4, 155, 156, 157, 158, 159, 
	160, 161, 162, 4, 6, 163, 164, 164
};

static const char _rtsp_headers_trans_actions[] = {
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 1, 3, 
	3, 77, 5, 5, 0, 0, 0, 0, 
	0, 11, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 14, 0, 0, 
	0, 0, 0, 0, 0, 0, 17, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 23, 0, 0, 
	0, 0, 0, 26, 0, 0, 0, 29, 
	0, 0, 20, 0, 0, 0, 32, 0, 
	0, 0, 0, 0, 0, 0, 35, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 38, 0, 0, 0, 
	0, 41, 0, 0, 0, 0, 0, 0, 
	47, 0, 0, 0, 0, 0, 0, 50, 
	0, 0, 0, 0, 53, 0, 0, 0, 
	0, 0, 0, 44, 0, 0, 0, 0, 
	0, 0, 0, 56, 0, 0, 0, 0, 
	59, 0, 0, 0, 62, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 65, 0, 
	0, 0, 0, 0, 0, 0, 68, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 71, 0, 0, 0, 0, 0, 
	0, 0, 0, 74, 0, 0, 5, 0
};

static const char _rtsp_headers_from_state_actions[] = {
	0, 0, 0, 0, 0, 0, 7, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 9
};

static const int rtsp_headers_start = 1;
static const int rtsp_headers_first_final = 165;

static const int rtsp_headers_en_RTSP_Headers = 1;


#line 707 "src/network/ragel_headers.c"
	{
	cs = rtsp_headers_start;
	}

#line 712 "src/network/ragel_headers.c"
	{
	int _klen;
	unsigned int _trans;
	const char *_acts;
	unsigned int _nacts;
	const char *_keys;

	if ( cs == 0 )
		goto _out;
_resume:
	_acts = _rtsp_headers_actions + _rtsp_headers_from_state_actions[cs];
	_nacts = (unsigned int) *_acts++;
	while ( _nacts-- > 0 ) {
		switch ( *_acts++ ) {
	case 25:
#line 49 "src/network/ragel_headers.rl"
	{
            if ( header_code != RTSP_Header__Invalid &&
                 header_code != RTSP_Header__Unsupported )
                rfc822_headers_set(headers, header_code,
                                   g_strndup(header_str, header_len));

            header_code = RTSP_Header__Invalid;
            header_str = NULL;
            header_len = 0;
            *read_size = p - msg;
        }
	break;
	case 26:
#line 67 "src/network/ragel_headers.rl"
	{ *read_size = p - msg; {p++; goto _out; } }
	break;
#line 745 "src/network/ragel_headers.c"
		}
	}

	_keys = _rtsp_headers_trans_keys + _rtsp_headers_key_offsets[cs];
	_trans = _rtsp_headers_index_offsets[cs];

	_klen = _rtsp_headers_single_lengths[cs];
	if ( _klen > 0 ) {
		const char *_lower = _keys;
		const char *_mid;
		const char *_upper = _keys + _klen - 1;
		while (1) {
			if ( _upper < _lower )
				break;

			_mid = _lower + ((_upper-_lower) >> 1);
			if ( (*p) < *_mid )
				_upper = _mid - 1;
			else if ( (*p) > *_mid )
				_lower = _mid + 1;
			else {
				_trans += (unsigned int)(_mid - _keys);
				goto _match;
			}
		}
		_keys += _klen;
		_trans += _klen;
	}

	_klen = _rtsp_headers_range_lengths[cs];
	if ( _klen > 0 ) {
		const char *_lower = _keys;
		const char *_mid;
		const char *_upper = _keys + (_klen<<1) - 2;
		while (1) {
			if ( _upper < _lower )
				break;

			_mid = _lower + (((_upper-_lower) >> 1) & ~1);
			if ( (*p) < _mid[0] )
				_upper = _mid - 2;
			else if ( (*p) > _mid[1] )
				_lower = _mid + 2;
			else {
				_trans += (unsigned int)((_mid - _keys)>>1);
				goto _match;
			}
		}
		_trans += _klen;
	}

_match:
	_trans = _rtsp_headers_indicies[_trans];
	cs = _rtsp_headers_trans_targs[_trans];

	if ( _rtsp_headers_trans_actions[_trans] == 0 )
		goto _again;

	_acts = _rtsp_headers_actions + _rtsp_headers_trans_actions[_trans];
	_nacts = (unsigned int) *_acts++;
	while ( _nacts-- > 0 )
	{
		switch ( *_acts++ )
		{
	case 0:
#line 46 "src/network/rfc822proto-statemachine.rl"
	{ header_code = RTSP_Header__Unsupported; }
	break;
	case 1:
#line 47 "src/network/rfc822proto-statemachine.rl"
	{ header_code = RTSP_Header_Allow; }
	break;
	case 2:
#line 48 "src/network/rfc822proto-statemachine.rl"
	{ header_code = RTSP_Header_Authorization; }
	break;
	case 3:
#line 49 "src/network/rfc822proto-statemachine.rl"
	{ header_code = RTSP_Header_Bandwidth; }
	break;
	case 4:
#line 50 "src/network/rfc822proto-statemachine.rl"
	{ header_code = RTSP_Header_CSeq; }
	break;
	case 5:
#line 51 "src/network/rfc822proto-statemachine.rl"
	{ header_code = RTSP_Header_Content_Base; }
	break;
	case 6:
#line 52 "src/network/rfc822proto-statemachine.rl"
	{ header_code = RTSP_Header_Content_Length; }
	break;
	case 7:
#line 53 "src/network/rfc822proto-statemachine.rl"
	{ header_code = RTSP_Header_Content_Type; }
	break;
	case 8:
#line 54 "src/network/rfc822proto-statemachine.rl"
	{ header_code = RTSP_Header_Date; }
	break;
	case 9:
#line 55 "src/network/rfc822proto-statemachine.rl"
	{ header_code = RTSP_Header_Location; }
	break;
	case 10:
#line 56 "src/network/rfc822proto-statemachine.rl"
	{ header_code = RTSP_Header_Proxy_Require; }
	break;
	case 11:
#line 57 "src/network/rfc822proto-statemachine.rl"
	{ header_code = RTSP_Header_Public; }
	break;
	case 12:
#line 58 "src/network/rfc822proto-statemachine.rl"
	{ header_code = RTSP_Header_RTP_Info; }
	break;
	case 13:
#line 59 "src/network/rfc822proto-statemachine.rl"
	{ header_code = RTSP_Header_Range; }
	break;
	case 14:
#line 60 "src/network/rfc822proto-statemachine.rl"
	{ header_code = RTSP_Header_Referer; }
	break;
	case 15:
#line 61 "src/network/rfc822proto-statemachine.rl"
	{ header_code = RTSP_Header_Require; }
	break;
	case 16:
#line 62 "src/network/rfc822proto-statemachine.rl"
	{ header_code = RTSP_Header_Server; }
	break;
	case 17:
#line 63 "src/network/rfc822proto-statemachine.rl"
	{ header_code = RTSP_Header_Session; }
	break;
	case 18:
#line 64 "src/network/rfc822proto-statemachine.rl"
	{ header_code = RTSP_Header_Speed; }
	break;
	case 19:
#line 65 "src/network/rfc822proto-statemachine.rl"
	{ header_code = RTSP_Header_Timestamp; }
	break;
	case 20:
#line 66 "src/network/rfc822proto-statemachine.rl"
	{ header_code = RTSP_Header_Transport; }
	break;
	case 21:
#line 67 "src/network/rfc822proto-statemachine.rl"
	{ header_code = RTSP_Header_Unsupported; }
	break;
	case 22:
#line 68 "src/network/rfc822proto-statemachine.rl"
	{ header_code = RTSP_Header_User_Agent; }
	break;
	case 23:
#line 41 "src/network/ragel_headers.rl"
	{
            header_str = p;
        }
	break;
	case 24:
#line 45 "src/network/ragel_headers.rl"
	{
            header_len = p - header_str;
        }
	break;
#line 914 "src/network/ragel_headers.c"
		}
	}

_again:
	if ( cs == 0 )
		goto _out;
	p += 1;
	goto _resume;
	_out: {}
	}

#line 72 "src/network/ragel_headers.rl"


    if ( cs < rtsp_headers_first_final )
        return ( p == pe ) ? 0 : -1;

    return 1;
}

int ragel_read_http_headers(GHashTable *headers, const char *msg,
                            size_t length, size_t *read_size)
{
    int cs;
    const char *p = msg, *pe = p + length;
    HTTP_Header header_code = HTTP_Header__Invalid;

    const char *header_str = NULL;
    size_t header_len = 0;

    
#line 946 "src/network/ragel_headers.c"
static const char _http_headers_actions[] = {
	0, 1, 0, 1, 11, 1, 12, 1, 
	13, 1, 14, 2, 0, 1, 2, 0, 
	2, 2, 0, 3, 2, 0, 4, 2, 
	0, 5, 2, 0, 6, 2, 0, 7, 
	2, 0, 8, 2, 0, 9, 2, 0, 
	10, 2, 11, 12
};

static const short _http_headers_key_offsets[] = {
	0, 0, 26, 28, 39, 43, 49, 75, 
	90, 103, 116, 129, 140, 153, 166, 179, 
	192, 205, 218, 231, 242, 255, 270, 283, 
	296, 309, 322, 335, 348, 359, 372, 385, 
	398, 409, 424, 437, 450, 463, 476, 489, 
	500, 513, 526, 539, 550, 563, 576, 589, 
	600, 613, 626, 639, 652, 665, 678, 689, 
	702, 715, 728, 741, 754, 765, 778, 791, 
	804, 817, 830, 841, 854, 867, 880, 891, 
	904, 917, 930, 943, 956, 967, 978, 991, 
	1004, 1017, 1030, 1043, 1056, 1069, 1082, 1095, 
	1108, 1121, 1134, 1147, 1158, 1160, 1166
};

static const char _http_headers_trans_keys[] = {
	10, 13, 67, 68, 69, 80, 83, 85, 
	88, 95, 99, 100, 101, 112, 115, 117, 
	120, 126, 45, 46, 48, 57, 65, 90, 
	97, 122, 10, 13, 58, 95, 126, 45, 
	46, 48, 57, 65, 90, 97, 122, 9, 
	32, 33, 126, 9, 10, 13, 32, 33, 
	126, 10, 13, 67, 68, 69, 80, 83, 
	85, 88, 95, 99, 100, 101, 112, 115, 
	117, 120, 126, 45, 46, 48, 57, 65, 
	90, 97, 122, 58, 65, 79, 95, 97, 
	111, 126, 45, 46, 48, 57, 66, 90, 
	98, 122, 58, 67, 95, 99, 126, 45, 
	46, 48, 57, 65, 90, 97, 122, 58, 
	72, 95, 104, 126, 45, 46, 48, 57, 
	65, 90, 97, 122, 58, 69, 95, 101, 
	126, 45, 46, 48, 57, 65, 90, 97, 
	122, 45, 46, 58, 95, 126, 48, 57, 
	65, 90, 97, 122, 58, 67, 95, 99, 
	126, 45, 46, 48, 57, 65, 90, 97, 
	122, 58, 79, 95, 111, 126, 45, 46, 
	48, 57, 65, 90, 97, 122, 58, 78, 
	95, 110, 126, 45, 46, 48, 57, 65, 
	90, 97, 122, 58, 84, 95, 116, 126, 
	45, 46, 48, 57, 65, 90, 97, 122, 
	58, 82, 95, 114, 126, 45, 46, 48, 
	57, 65, 90, 97, 122, 58, 79, 95, 
	111, 126, 45, 46, 48, 57, 65, 90, 
	97, 122, 58, 76, 95, 108, 126, 45, 
	46, 48, 57, 65, 90, 97, 122, 58, 
	95, 126, 45, 46, 48, 57, 65, 90, 
	97, 122, 58, 78, 95, 110, 126, 45, 
	46, 48, 57, 65, 90, 97, 122, 58, 
	78, 84, 95, 110, 116, 126, 45, 46, 
	48, 57, 65, 90, 97, 122, 58, 69, 
	95, 101, 126, 45, 46, 48, 57, 65, 
	90, 97, 122, 58, 67, 95, 99, 126, 
	45, 46, 48, 57, 65, 90, 97, 122, 
	58, 84, 95, 116, 126, 45, 46, 48, 
	57, 65, 90, 97, 122, 58, 73, 95, 
	105, 126, 45, 46, 48, 57, 65, 90, 
	97, 122, 58, 79, 95, 111, 126, 45, 
	46, 48, 57, 65, 90, 97, 122, 58, 
	78, 95, 110, 126, 45, 46, 48, 57, 
	65, 90, 97, 122, 58, 95, 126, 45, 
	46, 48, 57, 65, 90, 97, 122, 58, 
	69, 95, 101, 126, 45, 46, 48, 57, 
	65, 90, 97, 122, 58, 78, 95, 110, 
	126, 45, 46, 48, 57, 65, 90, 97, 
	122, 58, 84, 95, 116, 126, 45, 46, 
	48, 57, 65, 90, 97, 122, 45, 46, 
	58, 95, 126, 48, 57, 65, 90, 97, 
	122, 58, 76, 84, 95, 108, 116, 126, 
	45, 46, 48, 57, 65, 90, 97, 122, 
	58, 69, 95, 101, 126, 45, 46, 48, 
	57, 65, 90, 97, 122, 58, 78, 95, 
	110, 126, 45, 46, 48, 57, 65, 90, 
	97, 122, 58, 71, 95, 103, 126, 45, 
	46, 48, 57, 65, 90, 97, 122, 58, 
	84, 95, 116, 126, 45, 46, 48, 57, 
	65, 90, 97, 122, 58, 72, 95, 104, 
	126, 45, 46, 48, 57, 65, 90, 97, 
	122, 58, 95, 126, 45, 46, 48, 57, 
	65, 90, 97, 122, 58, 89, 95, 121, 
	126, 45, 46, 48, 57, 65, 90, 97, 
	122, 58, 80, 95, 112, 126, 45, 46, 
	48, 57, 65, 90, 97, 122, 58, 69, 
	95, 101, 126, 45, 46, 48, 57, 65, 
	90, 97, 122, 58, 95, 126, 45, 46, 
	48, 57, 65, 90, 97, 122, 58, 65, 
	95, 97, 126, 45, 46, 48, 57, 66, 
	90, 98, 122, 58, 84, 95, 116, 126, 
	45, 46, 48, 57, 65, 90, 97, 122, 
	58, 69, 95, 101, 126, 45, 46, 48, 
	57, 65, 90, 97, 122, 58, 95, 126, 
	45, 46, 48, 57, 65, 90, 97, 122, 
	58, 88, 95, 120, 126, 45, 46, 48, 
	57, 65, 90, 97, 122, 58, 80, 95, 
	112, 126, 45, 46, 48, 57, 65, 90, 
	97, 122, 58, 73, 95, 105, 126, 45, 
	46, 48, 57, 65, 90, 97, 122, 58, 
	82, 95, 114, 126, 45, 46, 48, 57, 
	65, 90, 97, 122, 58, 69, 95, 101, 
	126, 45, 46, 48, 57, 65, 90, 97, 
	122, 58, 83, 95, 115, 126, 45, 46, 
	48, 57, 65, 90, 97, 122, 58, 95, 
	126, 45, 46, 48, 57, 65, 90, 97, 
	122, 58, 82, 95, 114, 126, 45, 46, 
	48, 57, 65, 90, 97, 122, 58, 65, 
	95, 97, 126, 45, 46, 48, 57, 66, 
	90, 98, 122, 58, 71, 95, 103, 126, 
	45, 46, 48, 57, 65, 90, 97, 122, 
	58, 77, 95, 109, 126, 45, 46, 48, 
	57, 65, 90, 97, 122, 58, 65, 95, 
	97, 126, 45, 46, 48, 57, 66, 90, 
	98, 122, 58, 95, 126, 45, 46, 48, 
	57, 65, 90, 97, 122, 58, 69, 95, 
	101, 126, 45, 46, 48, 57, 65, 90, 
	97, 122, 58, 82, 95, 114, 126, 45, 
	46, 48, 57, 65, 90, 97, 122, 58, 
	86, 95, 118, 126, 45, 46, 48, 57, 
	65, 90, 97, 122, 58, 69, 95, 101, 
	126, 45, 46, 48, 57, 65, 90, 97, 
	122, 58, 82, 95, 114, 126, 45, 46, 
	48, 57, 65, 90, 97, 122, 58, 95, 
	126, 45, 46, 48, 57, 65, 90, 97, 
	122, 58, 83, 95, 115, 126, 45, 46, 
	48, 57, 65, 90, 97, 122, 58, 69, 
	95, 101, 126, 45, 46, 48, 57, 65, 
	90, 97, 122, 58, 82, 95, 114, 126, 
	45, 46, 48, 57, 65, 90, 97, 122, 
	45, 46, 58, 95, 126, 48, 57, 65, 
	90, 97, 122, 58, 65, 95, 97, 126, 
	45, 46, 48, 57, 66, 90, 98, 122, 
	58, 71, 95, 103, 126, 45, 46, 48, 
	57, 65, 90, 97, 122, 58, 69, 95, 
	101, 126, 45, 46, 48, 57, 65, 90, 
	97, 122, 58, 78, 95, 110, 126, 45, 
	46, 48, 57, 65, 90, 97, 122, 58, 
	84, 95, 116, 126, 45, 46, 48, 57, 
	65, 90, 97, 122, 58, 95, 126, 45, 
	46, 48, 57, 65, 90, 97, 122, 45, 
	46, 58, 95, 126, 48, 57, 65, 90, 
	97, 122, 58, 83, 95, 115, 126, 45, 
	46, 48, 57, 65, 90, 97, 122, 58, 
	69, 95, 101, 126, 45, 46, 48, 57, 
	65, 90, 97, 122, 58, 83, 95, 115, 
	126, 45, 46, 48, 57, 65, 90, 97, 
	122, 58, 83, 95, 115, 126, 45, 46, 
	48, 57, 65, 90, 97, 122, 58, 73, 
	95, 105, 126, 45, 46, 48, 57, 65, 
	90, 97, 122, 58, 79, 95, 111, 126, 
	45, 46, 48, 57, 65, 90, 97, 122, 
	58, 78, 95, 110, 126, 45, 46, 48, 
	57, 65, 90, 97, 122, 58, 67, 95, 
	99, 126, 45, 46, 48, 57, 65, 90, 
	97, 122, 58, 79, 95, 111, 126, 45, 
	46, 48, 57, 65, 90, 97, 122, 58, 
	79, 95, 111, 126, 45, 46, 48, 57, 
	65, 90, 97, 122, 58, 75, 95, 107, 
	126, 45, 46, 48, 57, 65, 90, 97, 
	122, 58, 73, 95, 105, 126, 45, 46, 
	48, 57, 65, 90, 97, 122, 58, 69, 
	95, 101, 126, 45, 46, 48, 57, 65, 
	90, 97, 122, 58, 95, 126, 45, 46, 
	48, 57, 65, 90, 97, 122, 10, 13, 
	9, 10, 13, 32, 33, 126, 0
};

static const char _http_headers_single_lengths[] = {
	0, 18, 2, 3, 2, 4, 18, 7, 
	5, 5, 5, 5, 5, 5, 5, 5, 
	5, 5, 5, 3, 5, 7, 5, 5, 
	5, 5, 5, 5, 3, 5, 5, 5, 
	5, 7, 5, 5, 5, 5, 5, 3, 
	5, 5, 5, 3, 5, 5, 5, 3, 
	5, 5, 5, 5, 5, 5, 3, 5, 
	5, 5, 5, 5, 3, 5, 5, 5, 
	5, 5, 3, 5, 5, 5, 5, 5, 
	5, 5, 5, 5, 3, 5, 5, 5, 
	5, 5, 5, 5, 5, 5, 5, 5, 
	5, 5, 5, 3, 2, 4, 0
};

static const char _http_headers_range_lengths[] = {
	0, 4, 0, 4, 1, 1, 4, 4, 
	4, 4, 4, 3, 4, 4, 4, 4, 
	4, 4, 4, 4, 4, 4, 4, 4, 
	4, 4, 4, 4, 4, 4, 4, 4, 
	3, 4, 4, 4, 4, 4, 4, 4, 
	4, 4, 4, 4, 4, 4, 4, 4, 
	4, 4, 4, 4, 4, 4, 4, 4, 
	4, 4, 4, 4, 4, 4, 4, 4, 
	4, 4, 4, 4, 4, 4, 3, 4, 
	4, 4, 4, 4, 4, 3, 4, 4, 
	4, 4, 4, 4, 4, 4, 4, 4, 
	4, 4, 4, 4, 0, 1, 0
};

static const short _http_headers_index_offsets[] = {
	0, 0, 23, 26, 34, 38, 44, 67, 
	79, 89, 99, 109, 118, 128, 138, 148, 
	158, 168, 178, 188, 196, 206, 218, 228, 
	238, 248, 258, 268, 278, 286, 296, 306, 
	316, 325, 337, 347, 357, 367, 377, 387, 
	395, 405, 415, 425, 433, 443, 453, 463, 
	471, 481, 491, 501, 511, 521, 531, 539, 
	549, 559, 569, 579, 589, 597, 607, 617, 
	627, 637, 647, 655, 665, 675, 685, 694, 
	704, 714, 724, 734, 744, 752, 761, 771, 
	781, 791, 801, 811, 821, 831, 841, 851, 
	861, 871, 881, 891, 899, 902, 908
};

static const char _http_headers_indicies[] = {
	0, 2, 4, 5, 6, 7, 8, 9, 
	10, 3, 4, 5, 6, 7, 8, 9, 
	10, 3, 3, 3, 3, 3, 1, 0, 
	2, 1, 11, 3, 3, 3, 3, 3, 
	3, 1, 12, 12, 13, 1, 14, 15, 
	16, 14, 13, 1, 0, 2, 4, 5, 
	6, 7, 8, 9, 10, 3, 4, 5, 
	6, 7, 8, 9, 10, 3, 3, 3, 
	3, 3, 1, 11, 17, 18, 3, 17, 
	18, 3, 3, 3, 3, 3, 1, 11, 
	19, 3, 19, 3, 3, 3, 3, 3, 
	1, 11, 20, 3, 20, 3, 3, 3, 
	3, 3, 1, 11, 21, 3, 21, 3, 
	3, 3, 3, 3, 1, 22, 3, 11, 
	3, 3, 3, 3, 3, 1, 11, 23, 
	3, 23, 3, 3, 3, 3, 3, 1, 
	11, 24, 3, 24, 3, 3, 3, 3, 
	3, 1, 11, 25, 3, 25, 3, 3, 
	3, 3, 3, 1, 11, 26, 3, 26, 
	3, 3, 3, 3, 3, 1, 11, 27, 
	3, 27, 3, 3, 3, 3, 3, 1, 
	11, 28, 3, 28, 3, 3, 3, 3, 
	3, 1, 11, 29, 3, 29, 3, 3, 
	3, 3, 3, 1, 30, 3, 3, 3, 
	3, 3, 3, 1, 11, 31, 3, 31, 
	3, 3, 3, 3, 3, 1, 11, 32, 
	33, 3, 32, 33, 3, 3, 3, 3, 
	3, 1, 11, 34, 3, 34, 3, 3, 
	3, 3, 3, 1, 11, 35, 3, 35, 
	3, 3, 3, 3, 3, 1, 11, 36, 
	3, 36, 3, 3, 3, 3, 3, 1, 
	11, 37, 3, 37, 3, 3, 3, 3, 
	3, 1, 11, 38, 3, 38, 3, 3, 
	3, 3, 3, 1, 11, 39, 3, 39, 
	3, 3, 3, 3, 3, 1, 40, 3, 
	3, 3, 3, 3, 3, 1, 11, 41, 
	3, 41, 3, 3, 3, 3, 3, 1, 
	11, 42, 3, 42, 3, 3, 3, 3, 
	3, 1, 11, 43, 3, 43, 3, 3, 
	3, 3, 3, 1, 44, 3, 11, 3, 
	3, 3, 3, 3, 1, 11, 45, 46, 
	3, 45, 46, 3, 3, 3, 3, 3, 
	1, 11, 47, 3, 47, 3, 3, 3, 
	3, 3, 1, 11, 48, 3, 48, 3, 
	3, 3, 3, 3, 1, 11, 49, 3, 
	49, 3, 3, 3, 3, 3, 1, 11, 
	50, 3, 50, 3, 3, 3, 3, 3, 
	1, 11, 51, 3, 51, 3, 3, 3, 
	3, 3, 1, 52, 3, 3, 3, 3, 
	3, 3, 1, 11, 53, 3, 53, 3, 
	3, 3, 3, 3, 1, 11, 54, 3, 
	54, 3, 3, 3, 3, 3, 1, 11, 
	55, 3, 55, 3, 3, 3, 3, 3, 
	1, 56, 3, 3, 3, 3, 3, 3, 
	1, 11, 57, 3, 57, 3, 3, 3, 
	3, 3, 1, 11, 58, 3, 58, 3, 
	3, 3, 3, 3, 1, 11, 59, 3, 
	59, 3, 3, 3, 3, 3, 1, 60, 
	3, 3, 3, 3, 3, 3, 1, 11, 
	61, 3, 61, 3, 3, 3, 3, 3, 
	1, 11, 62, 3, 62, 3, 3, 3, 
	3, 3, 1, 11, 63, 3, 63, 3, 
	3, 3, 3, 3, 1, 11, 64, 3, 
	64, 3, 3, 3, 3, 3, 1, 11, 
	65, 3, 65, 3, 3, 3, 3, 3, 
	1, 11, 66, 3, 66, 3, 3, 3, 
	3, 3, 1, 67, 3, 3, 3, 3, 
	3, 3, 1, 11, 68, 3, 68, 3, 
	3, 3, 3, 3, 1, 11, 69, 3, 
	69, 3, 3, 3, 3, 3, 1, 11, 
	70, 3, 70, 3, 3, 3, 3, 3, 
	1, 11, 71, 3, 71, 3, 3, 3, 
	3, 3, 1, 11, 72, 3, 72, 3, 
	3, 3, 3, 3, 1, 73, 3, 3, 
	3, 3, 3, 3, 1, 11, 74, 3, 
	74, 3, 3, 3, 3, 3, 1, 11, 
	75, 3, 75, 3, 3, 3, 3, 3, 
	1, 11, 76, 3, 76, 3, 3, 3, 
	3, 3, 1, 11, 77, 3, 77, 3, 
	3, 3, 3, 3, 1, 11, 78, 3, 
	78, 3, 3, 3, 3, 3, 1, 79, 
	3, 3, 3, 3, 3, 3, 1, 11, 
	80, 3, 80, 3, 3, 3, 3, 3, 
	1, 11, 81, 3, 81, 3, 3, 3, 
	3, 3, 1, 11, 82, 3, 82, 3, 
	3, 3, 3, 3, 1, 83, 3, 11, 
	3, 3, 3, 3, 3, 1, 11, 84, 
	3, 84, 3, 3, 3, 3, 3, 1, 
	11, 85, 3, 85, 3, 3, 3, 3, 
	3, 1, 11, 86, 3, 86, 3, 3, 
	3, 3, 3, 1, 11, 87, 3, 87, 
	3, 3, 3, 3, 3, 1, 11, 88, 
	3, 88, 3, 3, 3, 3, 3, 1, 
	89, 3, 3, 3, 3, 3, 3, 1, 
	90, 3, 11, 3, 3, 3, 3, 3, 
	1, 11, 91, 3, 91, 3, 3, 3, 
	3, 3, 1, 11, 92, 3, 92, 3, 
	3, 3, 3, 3, 1, 11, 93, 3, 
	93, 3, 3, 3, 3, 3, 1, 11, 
	94, 3, 94, 3, 3, 3, 3, 3, 
	1, 11, 95, 3, 95, 3, 3, 3, 
	3, 3, 1, 11, 96, 3, 96, 3, 
	3, 3, 3, 3, 1, 11, 97, 3, 
	97, 3, 3, 3, 3, 3, 1, 11, 
	98, 3, 98, 3, 3, 3, 3, 3, 
	1, 11, 99, 3, 99, 3, 3, 3, 
	3, 3, 1, 11, 100, 3, 100, 3, 
	3, 3, 3, 3, 1, 11, 101, 3, 
	101, 3, 3, 3, 3, 3, 1, 11, 
	102, 3, 102, 3, 3, 3, 3, 3, 
	1, 11, 103, 3, 103, 3, 3, 3, 
	3, 3, 1, 104, 3, 3, 3, 3, 
	3, 3, 1, 105, 106, 1, 107, 15, 
	16, 107, 108, 1, 1, 0
};

static const char _http_headers_trans_targs[] = {
	94, 0, 2, 3, 7, 44, 48, 55, 
	61, 67, 77, 4, 5, 93, 5, 6, 
	92, 8, 20, 9, 10, 11, 12, 13, 
	14, 15, 16, 17, 18, 19, 4, 21, 
	22, 29, 23, 24, 25, 26, 27, 28, 
	4, 30, 31, 32, 33, 34, 40, 35, 
	36, 37, 38, 39, 4, 41, 42, 43, 
	4, 45, 46, 47, 4, 49, 50, 51, 
	52, 53, 54, 4, 56, 57, 58, 59, 
	60, 4, 62, 63, 64, 65, 66, 4, 
	68, 69, 70, 71, 72, 73, 74, 75, 
	76, 4, 78, 79, 80, 81, 82, 83, 
	84, 85, 86, 87, 88, 89, 90, 91, 
	4, 6, 92, 93, 93
};

static const char _http_headers_trans_actions[] = {
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 1, 3, 3, 41, 5, 
	5, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 11, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	14, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 17, 0, 0, 0, 
	20, 0, 0, 0, 23, 0, 0, 0, 
	0, 0, 0, 26, 0, 0, 0, 0, 
	0, 29, 0, 0, 0, 0, 0, 32, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 35, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	38, 0, 0, 5, 0
};

static const char _http_headers_from_state_actions[] = {
	0, 0, 0, 0, 0, 0, 7, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 9
};

static const int http_headers_start = 1;
static const int http_headers_first_final = 94;

static const int http_headers_en_HTTP_Headers = 1;


#line 1337 "src/network/ragel_headers.c"
	{
	cs = http_headers_start;
	}

#line 1342 "src/network/ragel_headers.c"
	{
	int _klen;
	unsigned int _trans;
	const char *_acts;
	unsigned int _nacts;
	const char *_keys;

	if ( cs == 0 )
		goto _out;
_resume:
	_acts = _http_headers_actions + _http_headers_from_state_actions[cs];
	_nacts = (unsigned int) *_acts++;
	while ( _nacts-- > 0 ) {
		switch ( *_acts++ ) {
	case 13:
#line 103 "src/network/ragel_headers.rl"
	{
            if ( header_code != HTTP_Header__Invalid &&
                 header_code != HTTP_Header__Unsupported )
                rfc822_headers_set(headers, header_code,
                                   g_strndup(header_str, header_len));

            header_code = HTTP_Header__Invalid;
            header_str = NULL;
            header_len = 0;
            *read_size = p - msg;
        }
	break;
	case 14:
#line 121 "src/network/ragel_headers.rl"
	{ *read_size = p - msg; {p++; goto _out; } }
	break;
#line 1375 "src/network/ragel_headers.c"
		}
	}

	_keys = _http_headers_trans_keys + _http_headers_key_offsets[cs];
	_trans = _http_headers_index_offsets[cs];

	_klen = _http_headers_single_lengths[cs];
	if ( _klen > 0 ) {
		const char *_lower = _keys;
		const char *_mid;
		const char *_upper = _keys + _klen - 1;
		while (1) {
			if ( _upper < _lower )
				break;

			_mid = _lower + ((_upper-_lower) >> 1);
			if ( (*p) < *_mid )
				_upper = _mid - 1;
			else if ( (*p) > *_mid )
				_lower = _mid + 1;
			else {
				_trans += (unsigned int)(_mid - _keys);
				goto _match;
			}
		}
		_keys += _klen;
		_trans += _klen;
	}

	_klen = _http_headers_range_lengths[cs];
	if ( _klen > 0 ) {
		const char *_lower = _keys;
		const char *_mid;
		const char *_upper = _keys + (_klen<<1) - 2;
		while (1) {
			if ( _upper < _lower )
				break;

			_mid = _lower + (((_upper-_lower) >> 1) & ~1);
			if ( (*p) < _mid[0] )
				_upper = _mid - 2;
			else if ( (*p) > _mid[1] )
				_lower = _mid + 2;
			else {
				_trans += (unsigned int)((_mid - _keys)>>1);
				goto _match;
			}
		}
		_trans += _klen;
	}

_match:
	_trans = _http_headers_indicies[_trans];
	cs = _http_headers_trans_targs[_trans];

	if ( _http_headers_trans_actions[_trans] == 0 )
		goto _again;

	_acts = _http_headers_actions + _http_headers_trans_actions[_trans];
	_nacts = (unsigned int) *_acts++;
	while ( _nacts-- > 0 )
	{
		switch ( *_acts++ )
		{
	case 0:
#line 77 "src/network/rfc822proto-statemachine.rl"
	{ header_code = HTTP_Header__Unsupported; }
	break;
	case 1:
#line 78 "src/network/rfc822proto-statemachine.rl"
	{ header_code = HTTP_Header_Cache_Control; }
	break;
	case 2:
#line 79 "src/network/rfc822proto-statemachine.rl"
	{ header_code = HTTP_Header_Connection; }
	break;
	case 3:
#line 80 "src/network/rfc822proto-statemachine.rl"
	{ header_code = HTTP_Header_Content_Length; }
	break;
	case 4:
#line 81 "src/network/rfc822proto-statemachine.rl"
	{ header_code = HTTP_Header_Content_Type; }
	break;
	case 5:
#line 82 "src/network/rfc822proto-statemachine.rl"
	{ header_code = HTTP_Header_Date; }
	break;
	case 6:
#line 83 "src/network/rfc822proto-statemachine.rl"
	{ header_code = HTTP_Header_Expires; }
	break;
	case 7:
#line 84 "src/network/rfc822proto-statemachine.rl"
	{ header_code = HTTP_Header_Pragma; }
	break;
	case 8:
#line 85 "src/network/rfc822proto-statemachine.rl"
	{ header_code = HTTP_Header_Server; }
	break;
	case 9:
#line 86 "src/network/rfc822proto-statemachine.rl"
	{ header_code = HTTP_Header_User_Agent; }
	break;
	case 10:
#line 87 "src/network/rfc822proto-statemachine.rl"
	{ header_code = HTTP_Header_x_sessioncookie; }
	break;
	case 11:
#line 95 "src/network/ragel_headers.rl"
	{
            header_str = p;
        }
	break;
	case 12:
#line 99 "src/network/ragel_headers.rl"
	{
            header_len = p - header_str;
        }
	break;
#line 1496 "src/network/ragel_headers.c"
		}
	}

_again:
	if ( cs == 0 )
		goto _out;
	p += 1;
	goto _resume;
	_out: {}
	}

#line 126 "src/network/ragel_headers.rl"


    if ( cs < http_headers_first_final )
        return ( p == pe ) ? 0 : -1;

    return 1;
}
